package com.wuage.application;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wuage.domain.model.UacPermission;
import com.wuage.domain.model.UacRole;
import com.wuage.interfaces.permission.domain.CreateOrUpdatePermissionDO;

import java.util.List;

/**
 * @author Shynin
 * @version 1.0
 * @date 2020-09-06 22:57
 */
public interface IUacPermissionService extends IService<UacPermission> {
    /**
     * 查询角色所拥有的的权限
     *
     * @param role 角色code
     * @return 权限
     */
    List<UacPermission> getPermissionByRole(String role);

    /**
     * 超管为管理员创建菜单、按钮权限
     *
     * @param uacRole 管理员角色信息
     * @return 权限信息
     */
    List<UacPermission> createAdminPermission(UacRole uacRole);

    /**
     * 创建权限
     *
     * @param createOrUpdatePermissionDO 权限信息
     * @return 权限信息
     */
    UacPermission createOrUpdate(CreateOrUpdatePermissionDO createOrUpdatePermissionDO);

    /**
     * 删除权限以及子权限
     *
     * @param id id
     * @return 是否成功
     */
    Boolean delete(Long id);

    /**
     * 查询权限
     *
     * @param parentId 父权限id
     */
    List<UacPermission> select(Long parentId);

    /**
     * 查询用户权限-无层级
     *
     * @param role 用户角色Code
     * @return 权限
     */
    List<UacPermission> getPermissionByRoleWithoutChildren(String role);
}
